function upload_attach(actionUrl, event){
	var defEvent = {
		onSelectFail: function(files) {
			files.each(function(file) {
				new Element('li', {
					'class': 'file-invalid',
					events: {
						click: function() {
							this.destroy();
						}
					}
				}).adopt(
					new Element('span', {html: file.validationErrorMessage || file.validationError})
				).inject(this.list, 'bottom');
			}, this);	
		},
		onFileSuccess: function(file, request) {
			new Element('input', {type: 'checkbox', 'checked': true}).inject(file.ui.element, 'top');
			file.ui.element.highlight('#e6efc2');
		},
		
		onFileError: function(file) {
			file.ui.cancel.set('html', 'Retry').removeEvents().addEvent('click', function() {
				file.requeue();
				return false;
			});
			
			new Element('span', {
				html: file.errorMessage,
				'class': 'file-error'
			}).inject(file.ui.cancel, 'after');
		},
		
		onFileRequeue: function(file) {
			file.ui.element.getElement('.file-error').destroy();
			
			file.ui.cancel.set('html', 'Cancel').removeEvents().addEvent('click', function() {
				file.remove();
				return false;
			});
			
			this.start();
		}
	}
	
	defEvent = $merge(defEvent, event);
	
	var up = new FancyUpload3.Attach('demo-list', '#demo-attach, #demo-attach-2', {
		path: 'jscript/Swiff.Uploader.swf',
		url: actionUrl,
		//fileSizeMax: 2 * 1024 * 1024,
		verbose: false,
		onSelectFail: defEvent.onSelectFail,
		onFileSuccess: defEvent.onFileSuccess,
		onFileError: defEvent.onFileError,
		onFileRequeue: defEvent.onFileRequeue
	});	
}